package com.study.system.dto;

import com.study.system.enums.ResultCode;
import lombok.Data;

@Data
public class ResultData<T> {

    private Integer status;  // 结果状态码
    private T data;      // 结果携带数据
    private String msg;  // 结果携带信息

    /**
     * 获取操作成功的返回数据
     * @param data 要返回的数据
     * @return 统一的返回前端数据
     * @param <T> 要返回的数据类型
     */
    public static <T> ResultData<T> success(T data) {
        ResultData<T> resultData = new ResultData<T>();
        resultData.setData(data);
        resultData.setStatus(ResultCode.SUCCESS.getCode());
        resultData.setMsg(ResultCode.SUCCESS.getMessage());
        return resultData;
    }

    /**
     * 获取操作失败的返回数据
     * @param resultCode 操作失败的状态码类型
     * @return 统一的返回前端数据
     * @param <T> 要返回的数据类型
     */
    public static <T> ResultData<T> fail(ResultCode resultCode) {
        ResultData<T> resultData = new ResultData<T>();
        resultData.setStatus(resultCode.getCode());
        resultData.setMsg(resultCode.getMessage());
        return resultData;
    }

}
